package com.briup.day02;

import java.util.Calendar;
import java.util.Date;

/**
 * @author 郭枫
 * @version 1.1
 * 进制 和字符类
 * 第二章作业
 */
public class Test06 {
    public static void main(String[] args) {
//        进制
//        整型表示不同进制表示20
        int a = 20;//10进制
        int a2 = 0b00010100;//0b或0B开头 表示二进制 也可以写成0b0001_0100
        int a3 = 024;//八进制 以0开头
        int a4 = 0x14;//十六进制 以0x开头
        System.out.println(a == a2);
        System.out.println(a2 == a3);
        System.out.println(a3  == a4);

//        字符 2字节 取值为0-65535
        /*
        java使用的是Unicode(万国码) 字符集(映射关系)
        我们使用的是 utf-8编码格式 Unicode 实现
        GBk 编码格式
        ASCII ：美国码 英文字母 数字 符号
         */
        int c1 = 65;
        char c2 = 65;
        char c3 = 'A';//A相当于十进制的65 可以查看ASCII编码
        System.out.println(c1 == c2);//true
        System.out.println(c2 == c3);
        char c6 = '\u0041';//A
        char b = '0';//ASCII 表中值为48
        char b2 = 0;
        char b3 = '\u0000';//十六进制数：0000 0000
        char b4 = ' '; // \u0020 表示SP字符 空格
        System.out.println(b == b2);//false
        System.out.println(b2 == b3);//true
        System.out.println(b3 == b4);//false
        System.out.println(b == b4);//false

//        转义字符 以反斜杠开头 \
        System.out.println("as\tdf"); //制表符 \t 类似空格
        System.out.println("asd\ndfs"); // \r 换行
        System.out.println("a231\ras32"); //移动光标到行首
        System.out.println("/'");//输出 '

//        85: 64 + 16 + 4 + 1=> 0101 0101 二进制
//        85: 64 8*2 1*5 => 0125 八进制
//        85：16*5 1*5 => 0x55  十六进制
        System.out.println(2-1.1f);

//        获取毫秒
/*
      1 Date date = new Date();
        date.getTime
      2 System.currentTimeMillis();
      3 Calendar calendar = Calendar.getInstance();
        long time = calendar.getTimeInMillis();
        System.out.println(time);
*/
//        输出当前日期的毫秒值
        long data1;
        Date date = new Date();
        data1 = date.getTime();
        System.out.println(data1);

//        输出当前日期的微妙值
//        创建一个Calendar对象
        Calendar calendar = Calendar.getInstance();
//        获取当前时间的秒数
        int seconds = calendar.get(Calendar.SECOND);
//        获取当前时间的微妙数
        long currentTimeMillis = System.currentTimeMillis();
/*
        System.currentTimeMillis()返回从1970年1月1日0时0分0秒到现在的毫秒数
        通过对1000取余得到毫秒数的微妙部分 并加上上面获取到的秒数的微妙部分
*/
        int microseconds = (int) (currentTimeMillis % 1000) * 1000 + calendar.get(Calendar.MILLISECOND);
        System.out.println("当前时间的微妙数："+ microseconds);
//        byte short int long float double char boolean
//        -128~127  -65536~65535
/*
    基本数据类型和引用类型的区别
    一、从概念方面来说
    基本数据类型:变量名指向具体的数值
    引用数据类型:变量名指向存数据对象的内存地址,即变量名指向hash值

    二、从内存构建方面来说
    基本数据类型:变量在声明之后java就会立刻分配给他内存空间
    引用数据类型:它以特殊的方式(类似C指针)指向对象实体（具体的值），
    这类变量声明时不会分配内存，只是存储了一个内存地址。
    三、从使用方面来
    基本数据类型:使用时需要赋具体值,判断时使用“==”号
    引用数据类型:使用时可以赋null,判断时使用equals方法
 */
//         “\t”为制表符，作用是对齐。长度不足8的字符会以8个长度为格式来输出，
//         长度大于或等于8的字符会以8的倍数为格式输出。（注意：中文占两个字符，数字字母占一个
        class commodity {
            String name;
            double size;
            double price;
            int num;
//            构造器
            public commodity(String name, double size, double price, int num) {
                this.name = name;
                this.size = size;
                this.price = price;
                this.num = num;
            }
        }
        commodity Mac = new commodity("MAcBookAir", 13.3, 5699.0, 5);
        commodity Thi = new commodity("ThinkPadT490", 14.0, 8499.0, 10);
        commodity Mate = new commodity("MateBook", 14.0, 7199.0, 18);
        System.out.println("------------" + "商场库存清单" + "------------");
        System.out.println("品牌型号" + "\t"  + "\t" + "\t" + "尺寸" + "\t" + "\t" + "价格" + "\t" + "\t" + "库存数");
        System.out.println(Mac.name + "\t"  + "\t" + Mac.size + "\t" + Mac.price + "\t" + Mac.num);
        System.out.println(Thi.name+ "\t" + Thi.size + "\t" + Thi.price + "\t" + Thi.num);
        System.out.println( Mate.name+ "\t"  + "\t" + Mate.size + "\t" + Mate.price + "\t" + Mate.num);
//        1++;//字面常量值不能进行自增 int a = 6--;同样的错误
    }
}
